home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 476-500 / disk_498 / cpalette / src / includes / macros.asm < prev    next >
Assembly Source File  |  1992-05-06  |  6KB  |  308 lines

  1. ; *** MACROS.ASM
  2.  
  3. ; *** SYSTEM MACRO DEFINITIONS
  4.  
  5. EVENPC MACRO        ;WORD ALIGN PROGRAM COUNTER
  6.   DS.W 0
  7.  ENDM
  8.  
  9. ZERO MACRO        ;CLEAR DATA REGISTER
  10.   MOVEQ #0,\1        ;\1 <= DATA REGISTER
  11.  ENDM
  12.  
  13. ZERA MACRO        ;CLEAR ADDRESS REGISTER
  14.   SUBA.L \1,\1        ;\1 <= ADDRESS REGISTER
  15.  ENDM
  16.  
  17. PUSHREG MACRO        ;PUSH REGISTERS TO THE STACK
  18.   MOVEM.L \1,-(SP)    ;\1 <= REGISTERS
  19.  ENDM
  20.  
  21. PUSHALL MACRO        ;PUSH ALL REGISTERS TO THE STACK
  22.   PUSHREG D0-D7/A0-A6
  23.  ENDM
  24.  
  25. PULLREG MACRO        ;PULL REGISTERS FROM THE STACK
  26.   MOVEM.L (SP)+,\1    ;\1 <= REGISTERS
  27.  ENDM
  28.  
  29. PULLALL MACRO        ;PULL ALL REGISTERS FROM THE STACK
  30.   PULLREG D0-D7/A0-A6
  31.  ENDM
  32.  
  33. LIBCALL MACRO        ;GENERAL LIBRARY CALL
  34.   MOVE.L \1,A6        ;\1 <= LIBRARY BASE
  35.   JSR LVO.\2(A6)    ;\2 <= FUNCTION OFFSET
  36.  ENDM
  37.  
  38. SYSLIB MACRO        ;EXEC LIBRARY
  39.   LIBCALL SYSBASE,\1    ;\1 <= FUNCTION OFFSET
  40.  ENDM
  41.  
  42. DOSLIB MACRO        ;DOS LIBRARY
  43.   LIBCALL _DOSBASE,\1    ;\1 <= FUNCTION OFFSET
  44.  ENDM
  45.  
  46. GFXLIB MACRO        ;GRAPHICS LIBRARY
  47.  IFNC '\2',''        ;\1 <= FUNCTION OFFSET
  48.   MOVE.L \2,A1        ;\2 <= [*RASTPORT]
  49.  ENDC
  50.   LIBCALL _GFXBASE,\1
  51.  ENDM
  52.  
  53. INTLIB MACRO        ;INTUITION LIBRARY
  54.   LIBCALL _INTBASE,\1    ;\1 <= FUNCTION OFFSET
  55.  ENDM
  56.  
  57. MATHLIB MACRO        ;MATH LIBRARY
  58.   LIBCALL _MATHBASE,\1    ;\1 <= FUNCTION OFFSET
  59.  ENDM
  60.  
  61. TRANSLIB MACRO        ;TRANSMATH LIBRARY
  62.   LIBCALL _MATHTRANSBASE,\1    ;\1 <= FUNCTION OFFSET
  63.  ENDM
  64.  
  65. ICONLIB MACRO        ;ICONS LIBRARY
  66.   LIBCALL _ICONBASE,\1    ;\1 <= FUNCTION OFFSET
  67.  ENDM
  68.  
  69. JUST MACRO        ;RUN FUNCTION OF LIBRARY
  70.   JSR LVO.\1(A6)    ;\1 <= FUNCTION OFFSET
  71.  ENDM        ;A6 <= LIBRARY ADDRESS
  72.  
  73. EMERGENCY MACRO    ;PUT ERROR CODE IN D0 AND EXIT
  74.   MOVE.L #\1,D0        ;\1 <= ERROR CODE
  75.   JMP _ERROR
  76.  ENDM
  77.  
  78. ALLOCPUBMEM MACRO    ;ALLOCATE PUBLIC MEMORY
  79.   MOVE.L \1,D0        ;\1 <= SIZE
  80.   MOVE.L #MEMF_PUBLIC!MEMF_CLEAR,D1
  81.   SYSLIB ALLOCMEM
  82.  ENDM
  83.  
  84. FREEMEM MACRO        ;FREE ALLOCATED MEMORY
  85.   MOVE.L \1,A1        ;\1 <= ADDRESS
  86.   MOVE.L \2,D0        ;\2 <= SIZE
  87.   SYSLIB FREEMEM
  88.  ENDM
  89.  
  90. ; *** DOS MACRO DEFINITIONS
  91.  
  92. DOSREAD MACRO        ;DOS READ
  93.   MOVE.L \1,D1        ;\1 <= *FILE HANDLE
  94.   MOVE.L \2,D2        ;\2 <= *BUFF
  95.   MOVE.L \3,D3        ;\3 <= LENGTH
  96.   DOSLIB READ
  97.  ENDM
  98.  
  99. DOSPRINT MACRO        ;DOS PRINT
  100.   PUSHREG D1-D3/A0-A1    ;\1 <= *FILE HANDLE 
  101.   MOVE.L \1,D1        ;\2 <= *BUFF
  102.   MOVE.L \2,D2        ;\3 <= [LENGTH]
  103.  IFC '\3',''
  104.   BSR DOSTEXTLEN    ;GET LENGTH IF UNSPECIFIED
  105.  ENDC
  106.  IFNC '\3',''
  107.   MOVE.L \3,D3
  108.  ENDC
  109.   DOSLIB WRITE
  110.   PULLREG D1-D3/A0-A1
  111.  ENDM
  112.  
  113.  IFD DOS
  114. DOSTEXTLEN        ;TEXT LENGTH SUBROUTINE
  115.   MOVE.L D2,A0        ;D2 <= ADDRESS
  116. 1$
  117.   TST.B (A0)+
  118.   BNE.S 1$
  119.   MOVE.L A0,D3
  120.   SUB.L D2,D3
  121.   SUBQ.L #1,D3
  122.  RTS
  123.  ENDC
  124.  
  125. ; *** INTUITION MACRO DEFINITIONS
  126.  
  127. REMEMBERCHIPMEM MACRO    ;CHIP MEMORY ALLOCATE REMEMBER
  128.   LEA \1,A0        ;\1 <= *REMEMBERKEY
  129.   MOVEQ.L #0,D0        ;\2 <= SIZE
  130.   MOVE \2,D0        ;\3 <= [SUBROUTINE]
  131.   MOVE.L #MEMF_CLEAR!MEMF_CHIP,D1
  132.   INTLIB ALLOCREMEMBER
  133.  IFNC '\3',''
  134.   TST.L D0
  135.   BEQ \3
  136.  ENDC
  137.  ENDM
  138.  
  139. REMEMBERPUBMEM MACRO    ;PUBLIC MEMORY ALLOCATE REMEMBER 
  140.   LEA \1,A0        ;\1 <= *REMEMBERKEY
  141.   MOVEQ.L #0,D0        ;\2 <= SIZE
  142.   MOVE \2,D0        ;\3 <= [SUBROUTINE]
  143.   MOVE.L #MEMF_CLEAR!MEMF_PUBLIC,D1
  144.   INTLIB ALLOCREMEMBER
  145.  IFNC '\3',''
  146.   TST.L D0
  147.   BEQ \3
  148.  ENDC
  149.  ENDM
  150.  
  151. ; *** GRAPHICS MACRO DEFINITIONS
  152.  
  153. GFXPOINT MACRO        ;LOCATION SELECTION
  154.  IFNC '\1',''        ;\1 <= [*X COORDINATE]
  155.   MOVE.W \1,D0        ;\2 <= [*Y COORDINATE]
  156.   MOVE.W \2,D1
  157.  ENDC
  158.   EXT.L D0
  159.   EXT.L D1
  160.  ENDM
  161.  
  162. GFXPUSH MACRO        ;PUSH 4 MAIN GRAPHICS REGISTERS
  163.   PUSHREG D0-D1/A0-A1
  164.  ENDM
  165.  
  166. GFXPULL MACRO        ;PULL 4 MAIN GRAPHICS REGISTERS
  167.   PULLREG D0-D1/A0-A1
  168.  ENDM
  169.  
  170. LOADRGB MACRO        ;LOAD COLORMAP
  171.   GFXPUSH        ;\1 <= *VIEWPORT
  172.   MOVEA.L \1,A0        ;\2 <= COLORMAP
  173.   LEA \2,A1        ;\3 <= COUNT
  174.   MOVEQ #\3,D0
  175.   GFXLIB LOADRGB4
  176.   GFXPULL
  177.  ENDM
  178.  
  179. SETOPEN MACRO        ;SET OUTLINE PEN COLOR
  180.  IFNC '\2',''        ;\1 <= *RASTPORT
  181.   MOVE.W \2,D0        ;\2 <= [*COLOR]
  182.  ENDC
  183.   MOVE.L \1,A1
  184.   MOVE.B D0,RP.OPEN(A1)
  185.  ENDM
  186.  
  187. SETAPEN MACRO        ;SET BACKGROUND DRAWING PEN FOR JAM1
  188.   GFXPUSH        ;\1 <= *RASTPORT
  189.  IFNC '\2',''        ;\2 <= [*COLOR]
  190.   MOVE.W \2,D0
  191.  ENDC
  192.   GFXLIB SETAPEN,\1
  193.   GFXPULL
  194.  ENDM
  195.  
  196. SETBPEN MACRO        ;SET BACKGROUND DRAWING PEN FOR JAM2
  197.   GFXPUSH        ;\1 <= *RASTPORT
  198.  IFNC '\2',''        ;\2 <= [*COLOR]
  199.   MOVE.W \2,D0
  200.  ENDC
  201.   GFXLIB SETBPEN,\1
  202.   GFXPULL
  203.  ENDM
  204.  
  205. SETDRMD MACRO        ;SET DRAWING MODE
  206.   GFXPUSH        ;\1 <= *RASTPORT
  207.  IFNC '\2',''        ;\2 <= [MODE]
  208.   MOVE.W \2,D0
  209.  ENDC
  210.   GFXLIB SETDRMD,\1
  211.   GFXPULL
  212.  ENDM
  213.  
  214. FILLWIN MACRO        ;FILLS A WINDOW WITH A SOLID COLOR
  215.   ZERO D0        ;\1 <= WINDOW
  216.   MOVEA.L \1,A0        ;\2 <= [COLOR REGISTER]
  217.   MOVE.L WW.RPORT(A0),RP
  218.  IFNC '\2',''
  219.   MOVE.W #\2,D0
  220.  ENDC
  221.   SETAPEN RP
  222.   MOVE.W WW.WIDTH(A0),D2
  223.   SUBI.W #4,D2
  224.   MOVE.W WW.HEIGHT(A0),D3
  225.   SUBI.W #2,D3
  226.   MOVE.W #2,D0
  227.   MOVE.W #10,D1
  228.   RECTFILL RP
  229.  ENDM
  230.  
  231. RECTFILL MACRO        ;FILLS A RECTANGLE ON A WINDOW
  232.   PUSHREG D0-D3        ;\1 <= *RASTPORT
  233.   MOVEA.L \1,A1        ;\2 <= [*X1 COORDINATE]
  234.  IFNC '\2',''        ;\3 <= [*Y1 COORDINATE]
  235.   MOVE.W \2,D0        ;\4 <= [*X2 COORDINATE]
  236.   MOVE.W \3,D1        ;\5 <= [*Y2 COORDINATE]
  237.   MOVE.W \4,D2
  238.   MOVE.W \5,D3
  239.  ENDC
  240.   EXT.L D0
  241.   EXT.L D1
  242.   EXT.L D2
  243.   EXT.L D3
  244.   GFXLIB RECTFILL
  245.   PULLREG D0-D3
  246.  ENDM
  247.  
  248. DRAWPOINT MACRO    ;DRAW POINT ON WINDOW
  249.   GFXPUSH        ;\1 <= *RASTPORT
  250.   GFXPOINT \2,\3    ;\2 <= [*X COORDINATE]
  251.   GFXLIB WRITEPIXEL,\1    ;\3 <= [*Y COORDINATE]
  252.   GFXPULL
  253.  ENDM
  254.  
  255. READPOINT MACRO    ;READ PIXEL ON WINDOW
  256.   PUSHREG D1        ;\1 <= *RASTPORT
  257.   GFXPOINT \2,\3    ;\2 <= [*X COORDINATE]
  258.   GFXLIB READPIXEL \1    ;\3 <= [*Y COORDINATE]
  259.   PULLREG D1
  260.  ENDM
  261.  
  262. DRAWLINE MACRO        ;DRAW LINE ON WINDOW
  263.   PUSHREG D0-D3        ;\1 <= *RASTPORT
  264.   MOVE.L \1,A1        ;\2 <= [*X1 COORDINATE]
  265.  IFNC '\2',''        ;\3 <= [*Y1 COORDINATE]
  266.   MOVE.W \2,D0        ;\4 <= [*X2 COORDINATE]
  267.   MOVE.W \3,D1        ;\5 <= [*Y2 COORDINATE]
  268.   MOVE.W \4,D2
  269.   MOVE.W \5,D3
  270.  ENDC
  271.   BSR _DRAWLINE
  272.   PULLREG D0-D3
  273.  ENDM
  274.  
  275.  IFD GFX
  276. _DRAWLINE        ;DRAWLINE SUBROUTINE
  277.   PUSHREG D0-D1        ;A0 <= *RASTPORT
  278.   PUSHREG A1        ;D0 <= X1 COORDINATE
  279.   EXT.L D0        ;D1 <= Y1 COORDINATE
  280.   EXT.L D1        ;D2 <= X2 COORDINATE
  281.   GFXLIB MOVE        ;D3 <= Y2 COORDINATE
  282.   MOVE.W D2,D0
  283.   MOVE.W D3,D1
  284.   EXT.L D0
  285.   EXT.L D1
  286.   PULLREG A1
  287.   JUST DRAW
  288.   PULLREG D0-D1
  289.  RTS
  290.  ENDC
  291.  
  292. ; *** FLOATING POINT MACROS
  293.  
  294. RMATH MACRO        ;REGULAR MATH
  295.   MOVE.L _MATHBASE,A6
  296.  ENDM
  297.  
  298. TMATH MACRO        ;TRANSMATH
  299.   MOVE.L _MATHTRANSBASE,A6
  300.  ENDM
  301.  
  302. FLOAT MACRO        ;FLOATING POINT MATH
  303.   MOVE.W \1,D0        ;\1 <= ?
  304.   EXT.L D0        ;\2 <= ?
  305.   JUST SPFlt
  306.   MOVE.L D0,\2
  307.  ENDM
  308.